package com.base.doublepoint;

/**
 * @ClassName CompareVersion
 * @Description 165. 比较版本号
 * 给你两个版本号 version1 和 version2 ，请你比较它们。
 * <p>
 * 版本号由一个或多个修订号组成，各修订号由一个 '.' 连接。每个修订号由 多位数字 组成，可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号，下标从 0 开始，最左边的修订号下标为 0 ，下一个修订号下标为 1 ，以此类推。例如，2.5.33 和 0.1 都是有效的版本号。
 * <p>
 * 比较版本号时，请按从左到右的顺序依次比较它们的修订号。比较修订号时，只需比较 忽略任何前导零后的整数值 。也就是说，修订号 1 和修订号 001 相等 。如果版本号没有指定某个下标处的修订号，则该修订号视为 0 。例如，版本 1.0 小于版本 1.1 ，因为它们下标为 0 的修订号相同，而下标为 1 的修订号分别为 0 和 1 ，0 < 1 。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/compare-version-numbers
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 * @Author li
 * Date 2021/9/1 15:15
 * Copyright
 **/
public class CompareVersion {
    /**
     * 划分字符串，再比较，时间复杂度O(M+N) 空间复杂度(m+n)
     * @param version1
     * @param version2
     * @return
     */
    public int compareVersion(String version1, String version2) {
        String[] v1 = version1.split("\\.");
        String[] v2 = version2.split("\\.");
        int i = 0;
        while (i<v1.length||i<v2.length){
            int t1 = i<v1.length?Integer.parseInt(v1[i]):0;
            int t2 = i<v2.length?Integer.parseInt(v2[i]):0;
            if (t1-t2>0){
                return 1;
            }else if (t1-t2<0){
                return -1;
            }
            i++;
        }
        return 0;
    }

    public int compareVersion1(String version1,String version2){
        return 0;
    }
}
